[Global]
FallbackTheme=_fallback

[Common]
ScreenHeight=720
AutoSetStyle=true

[ScreenTitleMenu]
ChoiceNames="1,2,Options,Online,DB,TH,FN,ED,Title,Exit"
DefaultChoice="1"
#Note: text is irrelevant, the localization uses the name.
Choice1="screen,ScreenSelectProfileTH;   name,StoryMode;   text,Story Mode"
Choice2="screen,ScreenSelectProfile;     name,FreePlay;    text,Free Play"
#Choice3="screen,ScreenOptionsTH;         name,Options;     text,Options"
ChoiceOnline="screen,ScreenNetworkOptions;name,Online;     text,Play Online"
ChoiceTitle="screen,ScreenInit;        name,Title;       text,Title"
ChoiceDB="screen,ScreenEvaluationTest;   name,EvalTest;    text,Eval Debug"
ChoiceTH="screen,ScreenSelectStoryDebug; name,StoryDebug;  text,Story Debug"
ChoiceFN="screen,ScreenFontTest;         name,FontTest;"
ChoiceED="screen,ScreenGameOver;         name,Ending Test; text,Ending Test"
#ChoiceED="screen,ScreenSelectCharFP;     name,EndingTest; text,SSC Debug"
#Choice4="screen,ScreenExit;              name,Exit;        text,Quit Game"

ScrollerX=0
ScrollerY=100
ScrollerTransform=function(self,offset,itemIndex,numItems) self:y(40*itemIndex); end
ShowIcon=true
[ScreenTitleJoin]
ChoiceNames="2"

[ScreenFontTest]
Fallback="ScreenWithMenuElements"
CodeNames="Left,Right,Down,Up,Select"
CodeLeft="Left"
CodeRight="Right"
CodeDown="Down"
CodeUp="Up"
CodeSelect="Select"

[ScreenEvaluationTest]
#How to test your screens really easy!
Fallback="ScreenEvaluation"
NextScreen=Branch.TitleMenu()
PrevScreen=Branch.TitleMenu()
ShowCoinsAndCredits=false

CodeNames="left,right,down,up,select"
Codeleft="Left"
Coderight="Right"
Codedown="Down"
Codeup="Up"
Codeselect="Select"

#Because ScreenInit jumps straight to ScreenTitleMenu when you press start, skip this screen and go to a custom one
[ScreenInit]
NextScreen="ScreenInit2"
TimerSeconds=0
ForceTimer=true

#This only appears in Free Play?
[ScreenLogo]
NextScreen="ScreenInit2"
TimerSeconds=0
ForceTimer=true

[ScreenInit2]
Fallback="ScreenWithMenuElements"
NextScreen="ScreenIntro"

[ScreenIntro]
Fallback="ScreenWithMenuElements"
CodeNames="start"
Codestart="Start"
NextScreen="ScreenTitleMB"

[ScreenTitleMB]
Fallback="ScreenWithMenuElements"
CodeNames="start,back"
Codestart="Start"
Codeback="Back"
PrevScreen="ScreenInit"
#NextScreen=Branch_IntroOrAttract()

[ScreenOptionsMaster]
ScreenOnCommand=zoom,1.5;xy,-SCREEN_WIDTH/4,-SCREEN_HEIGHT/4
RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(SCREEN_CENTER_Y-160+36*offsetFromCenter) end


[ScreenSelectMusic]
MusicWheelX=0
MusicWheelY=SCREEN_CENTER_Y
#NextScreen="ScreenStageInformation"
ShowOptionsMessageSeconds=0

#Someone is gonna kill me for this
BannerX=-1000
BannerY=-1000

NumSectionColors=1
SectionColor1=color("1,1,1,0")

ShowSongOptions=true
SongOptionsX=SCREEN_CENTER_X
SongOptionsY=SCREEN_CENTER_Y
SongOptionsOnCommand=visible,false;draworder,1000
SongOptionsOffCommand=
#--
SongOptionsShowCommand=visible,true;uppercase,true;zoom,1.2;settext,THEME:GetString("ScreenSelectMusic","Press Start For Options");decelerate,0.2;zoom,1;
SongOptionsEnterCommand=uppercase,true;settext,THEME:GetString("ScreenSelectMusic","Entering Options");sleep,0.2;linear,0.2;zoomy,0;
SongOptionsHideCommand=linear,0.1;zoomy,0;
#
ShowSongOptionsFrame=true
SongOptionsFrameX=SCREEN_CENTER_X
SongOptionsFrameY=SCREEN_CENTER_Y
SongOptionsFrameOnCommand=visible,false;draworder,1000
SongOptionsFrameOffCommand=
#--
SongOptionsFrameShowCommand=visible,true;diffuse,Color("Orange");diffusealpha,0.5;zoomy,40*1.5;linear,1.5;zoomy,40;
SongOptionsFrameEnterCommand=sleep,0.5;linear,0.3;diffusealpha,0;
SongOptionsFrameHideCommand=linear,0.3;diffusealpha,0

[MusicWheel]
SwitchSeconds=0.07
RouletteSwitchSeconds=0.04

NumWheelItems=30
#Like IIDX, but I think everyone hates this.
OnlyShowActiveSection=false

#And here's how to edit your MusicWheel to move the selected item to the left.
#make sure the x outside the <1 offset is the opposite of the multiplication of cos
#In other words, if you multiply math.cos() by -15, do x(15) for the else.
ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \
	if math.abs(offsetFromCenter) < 1 then \
		self:x(math.cos(offsetFromCenter*math.pi/1)*15); \
	else \
		self:x(-15); \
	end; \
	self:y(offsetFromCenter*65); \
end
# To add transparency like the stage select in Melty Blood
#	self:diffusealpha(1-math.abs(offsetFromCenter)/7); \

#Portal shows a random song when you select it
ShowPortal=true
#Random picks a song when you press enter
ShowRandom=false
#Roulette... You obviously know what that is
ShowRoulette=false

#be like IIDX, only 20 most played
MostPlayedSongsToShow=20
RecentSongsToShow=30

#Controls the glow graphic for a selected song
HighlightOnCommand=visible,false
#HighlightOnCommand=x,2;glowshift;effectclock,"beat";effectperiod,2;effectcolor1,color("1,.9,.8,0");effectcolor2,color("1,1,1,1")
HighlightFinishOnCommand=zoomy,0;rotationz,70;sleep,.25;decelerate,0.2;zoom,1;rotationz,0;diffusealpha,1
HighlightFinishOffCommand=zoomy,1;accelerate,0.04;diffusealpha,0
HighlightSortOnCommand=decelerate,0.15;zoom,1;rotationz,0;diffusealpha,1
HighlightSortOffCommand=

# RandomCycleSpeed guide (values taken from 3.9+ source code):
# 3.9+ name		| float value
# -----------------------
# turtle		| 1.0f // not really useful
# slow			| 0.5f
# fast			| 0.1f
# vfast			| 0.05f // This is what DDR Extreme runs around
# hyper			| 0.01f
# overdrive		| 0.005f
# insanity		| 0.0001f
# retardation		| 0.0005f
# omfg			| 0.00001f // joke value
# (default)		| 0.2f
RandomCycleSpeed=0.005

ModeMenuChoiceNames="Group,Title,Bpm,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,Genre,Length"

[MusicWheelItem]
WheelNotifyIconOnCommand=visible,false

SongNameX=-999
SongNameY=0
SongNameOnCommand=horizalign,left;visible,false
#roulette... No, it's not the same X value as SongNameX, I don't know why
PortalX=50
#PortalY=-1
PortalOnCommand=shadowlength,1;halign,0;maxwidth,240;rainbowscroll,true

#For some reason, not the same as SectionCountX. Probably incorrect graphic size
#Hey wait, isn't this supposed to display the difficulty? WTF?
GradeP1X=-242
GradeP2X=144

#CourseX=-850
#CourseY=-2
CourseOnCommand=shadowlength,1;halign,0

SectionExpandedX=-999
#SectionExpandedY=-1
SectionExpandedOnCommand=shadowlength,1;halign,0;

SectionCollapsedX=-999
#SectionCollapsedY=-1
SectionCollapsedOnCommand=shadowlength,1;halign,0;

SectionCountX=120
SectionCountY=10
SectionCountOnCommand=horizalign,left;vertalign,top;zoom,.8

#SortX=-125
#SortY=-2
SortOnCommand=shadowlength,0;halign,0;maxwidth,300;uppercase,true;

EditHelpY=SCREEN_TOP+46
InfoY=SCREEN_TOP+46

[ScreenSelectProfileTH]
Fallback="ScreenSelectProfile"
#NextScreen=EnterFakeCourse("THSM 1")
#NextScreen="ScreenSelectCourse"
#NextScreen="ScreenSelectDifficulty"
NextScreen="ScreenSelectCharacterTH"


[ScreenSelectStoryDebug]
Fallback="ScreenWithMenuElements"
PrevScreen="ScreenTitleMenu"
NextScreen="ScreenStoryTest"
CodeNames="Left,Right,Down,Up,Start,Back"
CodeLeft="Left"
CodeRight="Right"
CodeDown="Down"
CodeUp="Up"
CodeStart="Start"
CodeBack="Back"

[ScreenStory]
Fallback="ScreenWithMenuElements"
NextScreen="ScreenStageInformation"
CodeNames="left,right,down,up,start"
Codeleft="Left"
Coderight="Right"
Codedown="Down"
Codeup="Up"
Codestart="Start"

[ScreenStoryEnd]
Fallback="ScreenWithMenuElements"
NextScreen="ScreenCredits"

[ScreenStoryTest]
Fallback="ScreenStory"
PrevScreen="ScreenSelectStoryDebug"
NextScreen="ScreenSelectStoryDebug"
CancelScreen="ScreenTitleMenu"
BackGoesToStartScreen=true
ForceAllPlayers=false

#ScreenSelectCharacter is an actual screen defined within StepMania, don't attempt to name your screen that or bad things will happen
[ScreenSelectCharacterTH]
PlayMusic=true
Fallback="ScreenWithMenuElements"
PrevScreen="ScreenTitleMenu"
#NextScreen="ScreenSelectDifficulty"
#NextScreen=branch_tutorial();
NextScreen=EnterArcadeMode();

ShowCoinsAndCredits=false

CodeNames="left,right,down,up,select,start,back"
Codeleft="Left"
Coderight="Right"
Codedown="Down"
Codeup="Up"
Codeselect="Select"
Codestart="Start"
Codeback="Back"

[ScreenSelectProfile]
NextScreen="ScreenSelectCharFP"

[ScreenSelectCharFP]
Fallback="ScreenSelectCharacterTH"
NextScreen=Branch.AfterSelectProfile()

[ScreenEvaluationNormal]
NextScreen=AfterEvaluation()

#ScreenSelectPlayMode isn't used, so don't touch it
[ScreenSelectPlayMode]
ChoiceNames="Normal,Rave,Nonstop,Endless"
ScrollerTransform=function(self,offset,index,numChoices) self:x(SCREEN_WIDTH/numChoices*(index-1)); end

#To add Hazard mode, I have to implement a custom scroller.
[ScreenSelectPlayModeCustom]
#I don't think there's any reason to use Branch.TitleMenu() when ScreenTitleMenu is always forced
PrevScreen=Branch.TitleMenu()

Fallback="ScreenWithMenuElements"
CodeNames="Left,Right,Down,Up,Select,Start,Back"
CodeLeft="Left"
CodeRight="Right"
CodeDown="Down"
CodeUp="Up"
CodeSelect="Select"
CodeStart="Start"
CodeBack="Back"

[ScreenStageInformation]
ForceTimer=true
TimerSeconds=10
ShowCoinsAndCredits=true

#It's disabled in Graphics
[ScoreDisplayNormal]
FrameX=
FrameY=SCREEN_BOTTOM+100
FrameOnCommand=
FrameOffCommand=
TextX=
TextY=SCREEN_BOTTOM+100
TextOnCommand=
TextOffCommand=

[Player]
#TODO: Fix for centered player (Default is -144)
ReceptorArrowsYStandard=-110

[ScreenGameplay]
LifeP1Y=SCREEN_TOP-100
LifeP2Y=SCREEN_TOP-100
[ScreenCredits]
NextScreen="ScreenGameOver"
[ScreenCreditsOpt]
Fallback="ScreenCredits"
NextScreen="ScreenOptionsService"
PrevScreen="ScreenOptionsService"
[ScreenGameOver]
PrevScreen="ScreenInit"
NextScreen="ScreenInit"
StartScreen="ScreenInit"
